<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class aluno extends CI_Controller {
	public function __construct(){
		parent::__construct();
	}
	
	public function excluirResponsavel($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/AlunoDAO", "aDAO");
	
				$ret = $this->aDAO->excluirResponsavelById($id);
				if($ret == 1){
					$saida['error'] = $ret;
					$saida['msg'] = "Deletado";
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Erro desconhecido";
				}
	
			} else {
				$saida['error'] = -2;
				$saida['msg'] = "Id Errado";
			}
		} else {
			$this->login->redirecionar("admin");
		}
		header("Content-type: application/josn");
		echo json_encode($saida);
	}
	
	public function excluirTelResponsavel($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/AlunoDAO", "aDAO");
				
				$ret = $this->aDAO->excluirTelResponsavel($id);
				if($ret == 1){
					$saida['error'] = $ret;
					$saida['msg'] = "Deletado";
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Erro desconhecido";
				}
		
			} else {
				$saida['error'] = -2;
				$saida['msg'] = "Id Errado";
			}
		} else {
			$this->login->redirecionar("admin");
		}
		header("Content-type: application/josn");
		echo json_encode($saida);
	}
	
	public function inserirTelefoneResponsavel($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id) && isset($_POST['telefone']) && $_POST['telefone'] != ""){
				$this->load->model("dao/AlunoDAO", "aDAO");
				$telefone = $_POST['telefone'];
				$ret = $this->aDAO->inserirTelefoneResponsavel($id, $telefone);
				if($ret > 0){
					$saida['error'] = $ret;
					$saida['msg'] = "Inserido com sucesso";
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Erro desconhecido";
				}
				
			}
		} else {
			$this->login->redirecionar("admin");
		}
		header("Content-type: application/josn");
		echo json_encode($saida);
	}
	
	public function inserirEditarResponsavel($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				if(isset($_POST['nome']) && $_POST['nome'] != ""){
					$this->load->model("dao/AlunoDAO", "aDAO");
					$nome = $_POST['nome'];
					if(isset($_POST['email']) && $_POST['email'] != "" && isset($_POST['idAluno']) && $_POST['idAluno'] != ""){
						$email = $_POST['email'];
					} else {
						$email = "";
					}
					$idAluno = (int)$_POST['idAluno'];
					$ret = (int)$this->aDAO->inserirEditarResponsavel($id, $idAluno, $nome, $email);
					
					if($ret > 0){
						$saida['error'] = $ret;
						$saida['msg'] = "Inserido com sucesso";
					}
					elseif($ret == 1){
						$saida['error'] = 0;
						$saida['msg'] = "Editado com sucesso";
					}
					else {
						$saida['error'] = -2;
						$saida['msg'] = "Erro, não encotrado para editar";
					}
					
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Campos em branco";
				}
				
			}
		} else {
			$this->login->redirecionar("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function listaResponsavel($id){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/AlunoDAO", "aDAO");
				
				$listaResponsavel = $this->aDAO->getResponsavelByAluno($id);
				$data = array(
						"listaResponsavel" => $listaResponsavel,
						"idAluno" => $id);
				$this->load->view("responsaveis", $data);
			}
		} else {
			$this->login->redirecionar("admin");
		}
	}
	
	public function buscarAluno(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			if(isset($_POST['busca'])){
				$this->load->model("dao/AlunoDAO", "aDAO");
				$busca = $_POST['busca'];
				$listaAlunos = $this->aDAO->getAlunosBusca($busca);
				$data = array(
					"listaAlunos" => $listaAlunos);
				$this->load->view("buscaraluno", $data);
			}
		} else {
			$this->login->redirecionar("admin");
		}
	}
	
	public function getAlunosEntreAno(){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			$this->load->model("dao/AlunoDAO", "aDAO");
			if(isset($_POST['de']) && $_POST['de'] != "" && isset($_POST['ate']) && $_POST['ate'] != ""){
				
				$de = (int)$_POST['de'];
				$ate = (int)$_POST['ate'];
				$listaAlunos = $this->aDAO->getAlunoEntreAno($de, $ate);
				
				if(isset($listaAlunos) && is_array($listaAlunos) && count($listaAlunos) > 0){
					$lista = array();
					foreach ($listaAlunos as $al){
						$a = array();
						$a['id'] = $al->getIdAluno();
						$a['nome'] = $al->getNome();
						$a['matricula'] = $al->getMatricula();
						array_push($lista, $a);
					}
					$saida['error'] = 0;
					$saida['msg'] = "Sucesso";
					$saida['listaAluno'] = $lista;
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Aluno não encontrado no range";
				}
				
			}
		} else {
			$this->login->redirecionar("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function gerarPdf(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("aluno")){
			
				$this->load->model("dao/AlunoDAO", "aDAO");
				
				$idAluno = $this->login->idLogado();
				$listaMateria = $this->aDAO->getMateriaNotaByAluno($idAluno);
				$nomeAluno = $this->login->getNomeAluno();
				
				$alunoTurma = $this->aDAO->getAlunoTurma($idAluno);
				$ensino = null;
				if(isset($alunoTurma) && isset($alunoTurma['turma'])){
					$this->load->model("dao/EnsinoDAO", "eDAO");
					$ensino = $this->eDAO->getEnsinoById($alunoTurma['turma']->serie->getIdEnsino());
				}
				if($listaMateria && is_array($listaMateria) && count($listaMateria) > 0){
					for($i = 0; $i < count($listaMateria); $i++){
						if(isset($listaMateria[$i])){
							$falta = $this->aDAO->getFaltasAluno($idAluno, $listaMateria[$i]->getIdMateria());
							$listaMateria[$i]->faltas = $falta;
						}
						
					}
				}
				$data = array(
						"nomeAluno" => $nomeAluno,
						"listaMateria" => $listaMateria,
						"alunoTurma" => $alunoTurma,
						"ensino" => $ensino);
				$this->load->view("boletimpdf", $data);
				
				$html = $this->output->get_output();
				$this->load->library("PDF");
				
				$this->PDF->load_html(utf8_decode($html));
				$this->PDF->set_paper('a4', 'landscape');
				$this->PDF->render();
				
				$this->PDF->stream(str_replace(" ", "", $nomeAluno).date("Ymd").".pdf");
			
		} else {
			$this->login->redirecionar("admin");
		}
	}
	
	public function index(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("aluno")){
			
			//$this->PDF->stream("exemplo-01.pdf");
			$this->load->model("dao/AlunoDAO", "aDAO");
			$idAluno = $this->login->idLogado();
			$listaMateria = $this->aDAO->getMateriaNotaByAluno($idAluno);
			$nomeAluno = $this->login->getNomeAluno();
			
			$alunoTurma = $this->aDAO->getAlunoTurma($idAluno);
			$ensino = null;
			if(isset($alunoTurma) && isset($alunoTurma['turma'])){
				$this->load->model("dao/EnsinoDAO", "eDAO");
				$ensino = $this->eDAO->getEnsinoById($alunoTurma['turma']->serie->getIdEnsino());
			}
			if($listaMateria && is_array($listaMateria) && count($listaMateria) > 0){
				for($i = 0; $i < count($listaMateria); $i++){
					if(isset($listaMateria[$i])){
						$falta = $this->aDAO->getFaltasAluno($idAluno, $listaMateria[$i]->getIdMateria());
						$listaMateria[$i]->faltas = $falta;
					}
					
				}
			}
			$data = array(
					"nomeAluno" => $nomeAluno,
					"listaMateria" => $listaMateria,
					"alunoTurma" => $alunoTurma,
					"ensino" => $ensino);
			$this->load->view("principalaluno", $data);
			
			/*$html = $this->output->get_output();
			$this->load->library("PDF");
				
			$this->PDF->load_html($html);
			$this->PDF->set_paper('a4', 'portrait');
			$this->PDF->render();
			$this->PDF->stream("exemplo-01.pdf");*/
			
		} else {
			$this->login->redirecionar("aluno");
		}
	}
	
	public function getAlunosNotaByTurma(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("professor")){
			 /*$idMateria = 10;//$POST
			 $idTurma = 3; //POST*/
			 $idMateria = $_POST['idMateria'];
			 $idTurma = $_POST['idTurma'];
			 $this->load->model("dao/AlunoDAO", "aDAO");
			 $lista = $this->aDAO->getAlunosNotaByTurma($idTurma, $idMateria);
			 if(isset($lista) && count($lista) > 0){
				for($i = 0; $i < count($lista); $i++){
					$falta = $this->aDAO->getFaltasAluno($lista[$i]->getIdAluno(), $idMateria);
					if(isset($falta) && count($falta) > 0){
						$lista[$i]->faltas = $falta;
					}
				}
			 }
			 /*echo var_dump($lista[0]->faltas);
			 exit();*/
			 $data = array(
			 		"listaAluno" => $lista);
			 $this->load->view("tabelalancamentonota", $data);
			 
		} else {
			$this->login->redirecionar("professor");
		}
	}
	
	public function alterarOrdemChamada(){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			if(isset($_POST['lista']) && $_POST['lista'] != ""){
				$lista = $_POST['lista'];
				$this->load->model("dao/AlunoDAO", "aDAO");
				$flag = true;
				foreach($lista as $l){
					$retorno = $this->aDAO->alterarOrdemAluno($l['idAluno'], $l['idturma'], $l['ordem']);
					if(!$retorno){
						$flag = false;
						break;
					}
				}
				if(!$flag){
					$saida['error'] = -1;
					$saida['msg'] = "Houve um erro ao ordenar";
				} else {
					$saida['error'] = 0;
					$saida['msg'] = "Editado com sucesso";
				}
			} else {
				$saida['error'] = -3;
				$saida['msg'] = "Faça o ordenamento";
			}
			
			
		} else {
			$this->login->redireciona("admin");
		}
		
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function getAlunosByIdTurma($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			if(isset($id) && $id != "" && is_numeric($id)){
				$this->load->model("dao/AlunoDAO", "aDAO");
				$listaAlunos = $this->aDAO->getAlunosByTurma($id);
				if($listaAlunos){
					$saida['error'] = 0;
					$saida['msg'] = "Sucesso";
					$listaAluno = array();
					foreach($listaAlunos as $a){
						$aluno = array();
						$aluno['id'] = $a->getIdAluno();
						$aluno['ordem'] = $a->getIntOrdemChamada();
						$aluno['nome'] = $a->getNome();
						array_push($listaAluno, $aluno);
					}
					$saida['listaAluno'] = $listaAluno;
				} else {
					$saida['error'] = -1;
					$saida['msg'] = "Sem alunos na turma";
				}
			} else {
				$saida['error'] = -3;
				$saida['msg'] = "Id não é numérico";
			}			
		} else {
			$this->login->redireciona("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	public function getAlunoTurma($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		$saida['error'] = -2;
		$saida['msg'] = "Erro desconhecido";
		if($this->login->testaLogado("admin")){
			$this->load->model("dao/AlunoDAO", "aDAO");
			$retorno = $this->aDAO->getAlunoTurma($id);
			if($retorno){
				$saida['error'] = 0;
				$saida['msg'] = "";
				$aluno = array();
				$aluno['id'] = $retorno['aluno']->getIdAluno();
				$aluno['nome'] = $retorno['aluno']->getNome();
				$aluno['matricula'] = $retorno['aluno']->getMatricula();
				$aluno['ordemchamada'] = $retorno['aluno']->getIntOrdemChamada();
				$saida['aluno'] = $aluno;
				if(isset($retorno['turma'])){
					$turma = array();
					$turma['idturma'] = $retorno['turma']->getIdTurma();
					$turma['idensino'] = $retorno['turma']->serie->getIdEnsino();
					$turma['nome'] = $retorno['turma']->getNome();
					$turma['strserie'] = $retorno['turma']->serie->getStrSerie();
					$turma['serie'] = $retorno['turma']->serie->getSerie();
					$turma['idserie'] = $retorno['turma']->serie->getSerie();
					$saida['turma'] = $turma;
					
					$this->load->model("dao/TurmaDAO", "tDAO");
					$listaTurma = $this->tDAO->getListaSerieTurmaByIdEnsino($retorno['turma']->serie->getIdEnsino());
					$listaTurmas = array();
					if($listaTurma){
						foreach($listaTurma as $s){
							$t = array();
							$t['id'] = $s->getIdTurma();
							$t['strserie'] = $s->serie->getStrSerie();
							$t['serie'] = $s->serie->getSerie();
							$t['idSerie'] = $s->serie->getIdSerie();
							$t['nome'] = $s->getNome();
							array_push($listaTurmas, $t);
						}
						$saida['listaTurma'] = $listaTurmas;
					} else {
						$saida['listaTurma'] = -1; // Sem séries
					}
					
				} else {
					$saida['turma'] = -1;
				}
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Aluno não encontrado";
			}
		} else {
			$this->login->redireciona("admin");
		}
		header("Content-type: application/json");
		echo json_encode($saida);
	}
	
	/**
	 * 
	 */
	public function cadastrar(){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			$this->load->view("cadastroaluno");
		} else {
			$this->login->redirecionar("admin");
		}
	}
	
	public function getAluno($id){
		$this->load->model("loginmodel", "login");
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/AlunoDAO", "aDAO");
				$aluno = $this->aDAO->getAlunoById($id);
				$data = array(
					"aluno" => $aluno);
				$this->load->view("cadastroaluno", $data);
			} else {
				echo "ID não numérico";
			}
		} else {
			$this->login->redireciona("admin");
		}
	}
	
	/**
	 * 
	 * @param unknown_type $id
	 */
	public function inserirEditar($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				if(isset($_POST['matricula']) && $_POST['matricula'] != "" && isset($_POST['nome']) && $_POST['nome'] != "" && isset($_POST['email']) && $_POST['email'] != "" && isset($_POST['data']) && $_POST['data'] != ""){
					$matricula = $_POST['matricula'];
					$nome = $_POST['nome'];
					$email = $_POST['email'];
					$senha = "";
					$data = $_POST['data'];
					$data = explode("/", $data);
					$data = array_reverse($data);
					$data = implode("-", $data);
					if((int)$matricula == 0 && isset($_POST['email']) && $_POST['email'] == ""){
						$saida['error'] = -3;
						$saida['msg'] = "Senha é obrigatório para cadastro";
					} else {
						if(isset($_POST['senha']) && $_POST['senha'] != ""){
							$senha = md5($_POST['senha']);
						}
						$this->load->model("dao/AlunoDAO", "aDAO");
						
						$retorno = (int)$this->aDAO->inserirEditar($id, $matricula, $nome, $email, $senha, $data);
						if($retorno == 0){
							$saida['error'] = 0;
							$saida['msg'] = "Inserido com sucesso";
						}
						elseif($retorno == 2){
							$saida['error'] = 1;
							$saida['msg'] = "Editado com sucesso sem editar a senha";
						}
						elseif($retorno == 1){
							$saida['error'] = 2;
							$saida['msg'] = "Editado com sucesso e senha redefinida";
						}
						elseif ($retorno == 3){
							$saida['error'] = 3;
							$saida['msg'] = "Não encontrado para alterar";
						}
						else {
							$saida['error'] = 4;
							$saida['msg'] = "Erro desconhecido";
						}
					
					}
				} else {
					$saida['error'] = -2;
					$saida['msg'] = "Campos obrigatórios ficaram em branco";
				}
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Id néo é numérico";
			}
			
		} else {
			$this->login->redireciona("admin");
		}
		echo json_encode($saida);
	}
	
	public function excluir($id){
		$this->load->model("loginmodel", "login");
		$saida = array();
		if($this->login->testaLogado("admin")){
			if(is_numeric($id)){
				$this->load->model("dao/AlunoDAO", "aDAO");
				$retorno = $this->aDAO->excluir($id);
				
				$saida['error'] = $retorno;
				
			} else {
				$saida['error'] = -1;
				$saida['msg'] = "Id não é número";
			}
			
		} else {
			$this->login->redireciona("admin");
		}
		
		echo json_encode($saida);
	}
}
